# @Filename:    select
# @Author:      王佳伟
# @Time:        2025-02-20 15:07
# @Describe:    select标签的下拉框选择
from selenium.webdriver.support.ui import Select
from selenium import webdriver
from selenium.webdriver.common.by import By
import time


class Select:
    def __init__(self):
        # 创建一个Chrome浏览器的WebDriver示例
        self.driver = webdriver.Chrome()
        # ChromeOptions类提供了对Chrome浏览器各种选项进行配置的方法;
        # 在excludeSwitches参数中，将enable-logging指定为要排除的选项，表示不启用浏览器的日志功能
        # options = webdriver.ChromeOptions()
        # options.add_experimental_option('excludeSwitches', ['enable-logging'])
        # self.drive = webdriver.Chrome(options=options)
        # 最大化窗口
        self.driver.maximize_window()
        # 隐式等待，设置最大的等待时长，只对查找元素（find_elementXXX）生效
        self.driver.implicitly_wait(2)

    def method(self):
        """代码执行"""
        # 打开本地html页面
        self.driver.get('file:///D:/repo/python-selenium-test/page/select_field.html')
        # 需要先定位到下拉框
        elements = self.driver.find_element(By.CSS_SELECTOR, '#nr')
        # Select(需要操作下拉框)。根据什么操作
        time.sleep(2)
        Select(elements).select_by_index(1)  # 根据index 下标定位 从0开始
        time.sleep(2)
        Select(elements).select_by_value('100')  # 根据value定位
        time.sleep(2)
        Select(elements).select_by_visible_text('每页显示50条')  # 根据文本定位

def method2():
    driver = webdriver.Chrome()
    driver.maximize_window()
    # 隐式等待，设置最大的等待时长，只对查找元素（find_elementXXX）生效
    driver.implicitly_wait(2)
    """代码执行"""
    # 打开本地html页面
    driver.get('file:///D:/repo/python-selenium-test/page/select_field.html')
    # 需要先定位到下拉框
    elements = driver.find_element(By.CSS_SELECTOR, '#nr')
    # Select(需要操作下拉框)。根据什么操作
    time.sleep(2)
    Select(elements).select_by_index(1)  # 根据index 下标定位 从0开始
    time.sleep(2)
    Select(elements).select_by_value('100')  # 根据value定位
    time.sleep(2)
    Select(elements).select_by_visible_text('每页显示50条')  # 根据文本定位
